#ifndef VERTEX3D
#define VERTEX3D

#include "../EngineConfig.hpp"
#include "Utils/Math/Vector3.hpp"
#include "Utils/Math/Vector2.hpp"

namespace red{
	/// \brief Standard Vertex3D used by RedEngine
	class Vertex3D{
		Vertex3D(){}

		Vertex3D(Vector3F pPosition, Vector2F pTexCoords) : mPosition(pPosition),
															mTexCoords(pTexCoords){
		}

		Vector3F mPosition;
		Vector2F mTexCoords;

		bool operator==(const Vertex3D &pV) const{
			return ((mPosition == pV.mPosition) && (mTexCoords == pV.mTexCoords));
		}

		bool operator!=(const Vertex3D &pV) const{
			return !((*this) == pV);
		}


	};

	/// \brief Standard Vertex2D used by RedEngine
	class Vertex2D{
		Vertex2D(){}

		Vertex2D(Vector2F pPosition, Vector2F pTexCoords) : mPosition(pPosition),
															mTexCoords(pTexCoords){
		}

		Vector2F mPosition;
		Vector2F mTexCoords;

		bool operator==(const Vertex2D &pV) const{
			return ((mPosition == pV.mPosition) && (mTexCoords == pV.mTexCoords));
		}

		bool operator!=(const Vertex2D &pV) const{
			return !((*this) == pV);
		}


	};

	/// \brief Just for usage
	typedef u32 Index;
}
#endif